// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出组件 ============================== //

export default (index) => ({
  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixScreen(), CORE.mixList()],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('./components', true, /vue$/)),

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 数据对象
     */
    obj() {
      const { DICT, info } = this
      const code = DICT.TYPE[index][2]
      return info[code]
    },

    /**
     * 表格属性
     */
    tableProp() {
      return {
        param: this.obj,
        list: this.obj.table,
        onSort: this.toSort,
        initSort: ['id', 'asc'],
      }
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 方法
     */
    toSort() {
      const [field, type] = this.obj[CORE.MAP.PAGE_SORT]
      const trans = (data) => data === '-' ? 0 : /^-?\d+(\.\d+)?%$/.test(data) ? +data.slice(0, -1) || 0 : data || 0
      const compare = (a, b) => trans(a[field]) - trans(b[field])
      this.obj.table.sort((a, b) => type === 'asc' ? compare(a, b) : compare(b, a))
    },
  },
})
